
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

package com.hlkj.pay.app.merchant.ext;

import javax.servlet.http.HttpServletRequest;

import com.hlkj.framework.common.pojo.CommonResult;
import com.hlkj.framework.extension.ExtensionPointI;
import com.hlkj.pay.app.merchant.ext.dto.payment.ChannelTransferContext;
import com.hlkj.pay.app.merchant.ext.dto.payment.ChannelVirtualAccountContext;
import com.hlkj.pay.dto.order.NotifyOrderTransferDto;
import com.hlkj.pay.infrastructure.model.pay.ProviderChannelConfigDO;

/**
 * 商户付款
 * 
 * @author HlpayTeam
 * @date 2024/09/12 11:39
 */
public interface ChannelMerchantTransferExtPt extends ExtensionPointI {

    /**
     * 提交渠道预转账(部分渠道要求先发起转账申请，然后才能提交转账--如合利宝验证码获取就是通过转账申请获取)
     * 
     * @param channelPayOrderContext
     */
    void submitChannelSingleTransferApply(ChannelTransferContext channelPayOrderContext);

    /**
     * 提交渠道提交转账
     *
     * @param channelPayOrderContext
     */
    void submitChannelSingleTransfer(ChannelTransferContext channelPayOrderContext);

    /**
     * 查询转账
     *
     * @param channelPayOrderContext
     */
    void queryChannelTransfer(ChannelTransferContext channelPayOrderContext);



    /**
     * 转账订单回调
     *
     * @param request
     * @return
     */
    CommonResult<NotifyOrderTransferDto> orderTransferStatusParse(HttpServletRequest request, ProviderChannelConfigDO providerChannelConfigDO);

    /**
     *
     * @param commonResult
     * @return
     */
    String callBackResponse(CommonResult commonResult);
}
